Общее описание и сборка

Шаблонный проект дает общее представление о том, как:

Проект представляет собой Java веб-приложение, управляемое Maven (m2-demo-plugin.zip). Для сборки приложения необходимо выполнить команду

mvn clean install

В результате выполнения команды:

Полученная war-сборка может быть загружена на сервер приложений через консоль администрирования штатным образом. При этом будет автоматически зарегистировано расширение веб-клиента и все настроечные параметры, описанные в классе SettingsFacade.java.

При удалении war-сборки с сервера приложений клиентское расширение будет также автоматически удалено, однако настроечные параметры сохранятся, что позволяет избежать необходимости повторной настройки при обновлении расширения.

После первого успешного выполнения команды mvn clean install для ускорения процесса сборки рекомендуется отключить повторную загрузку node.exe и установку пакетов, необходимых для сборки расширения клиента. Для этого в файле pom.xml для плагина frontend-maven-plugin необходимо отключить шаги install-node-and-npm и npm install, установив им опцию configuration.skip = true.

Описание расширения клиента

Код расширения веб-клиента расположен в папке src/main/frontend. Ключевым модулем Angular является M2DemoPluginModule, расположенный в файле m2-demo-plugin.module.ts, в котором объявлены все точки расширения:

Экспорт позиции осуществляется путем вызова REST-api, развернутого в расширении сервера (см. PluginRestService.java и api,service.ts).

Операция "Экспортировать позицию синхронно (с эмуляцией фоновой задачи)" демонстрирует, как на клиенте запустить индикацию продолжительного синронного запроса.

Операция "Экспортировать асинхронно" иницирует запуск фоновой задачи, результат выволнения которой может быть получен по ее окончанию через API сервера Semantic MDM. Таким образом, в расширении клиента есть возможность использовать как API, предоставляемое в расширении сервера, так и API самого сервера Semantic MDM.

В классе DemoDialogComponent представлен пример того, как разработчик может реализовать в расширении собственный модальный диалог. Далее этот диалог может быть открыт в любой точке расширения, использую сервис DynamicDialogService из библиотеки m2-core.

Описание расширения сервера

В серверном расширении представлен пример реализации REST-api, посредством которого осуществляется взаимодействие серверного и клиентского расширений. Из серверного расширения разработчики имеют возможность вызывать API сервера Semantic MDM, используя авторизационную куку JSESSION_ID, полученную в запросе от клиентского расширения (см. AuthorizationInterceptor.java).

Пример инициализации внешней фоновой задачи через API сервера Semantic MDM представлен в классе PluginServiceDelegate.java. Через API сервиса WorkExecutionService в расширении сервера можно инициализровать, изменять статус и завершать внешние фоновые задачи, а также сохранять результат их выполнения, который будет доступен до тех пор, пока пользователь не удалит фоновую задачу.